import {
	BASE_URL
} from './config.js'
import store from '../store'

//  公共的请求方法
function request({
	url,
	method,
	data,
	// 不填为不需要token,为true为需要token
	isAuth = true,
	json = false, // json格式 
	contentType = '', // 请求头
	// 默认显示Loading
	isShowLoading = false,
	LoadingText = '加载中'
}) {
	return new Promise((resolve, reject) => {
		// 接口不需要传token,默认值为{}
		//请求头
		let header = {
			'Content-type': 'application/' + (contentType || (json ? 'json' : 'x-www-form-urlencoded')),
		};
		if (isAuth) {
			// 接口需要传token
			let token = uni.getStorageSync('token')
			// 接口需要token，但是没有token，跳转登录页
			if (!token) {
				uni.showToast({
					icon: 'none',
					title: '登录过期，请重新登录！',
					mask: true,
					success: () => {
						setTimeout(() => {
							uni.reLaunch({
								url: '/pages/login/login'
							})
						}, 1500)
					}
				})
				return
			}
			header.token = token || ''
		}
		// 请求前开启loading
		if (isShowLoading) {
			uni.showLoading({
				title: LoadingText,
				mask: true
			})
		}
		uni.request({
			url: BASE_URL + '/api' + url,
			method,
			header,
			data,
			complete: res => {
				let {
					statusCode
				} = res
				// 请求后关闭loading
				if (isShowLoading) {
					uni.hideLoading()
				}
				if (statusCode === 401) {
					uni.clearStorageSync()
					uni.showToast({
						icon: 'none',
						title: '登录过期，请重新登录！',
						mask: true,
						success: () => {
							setTimeout(() => {
								uni.reLaunch({
									url: '/pages/login/login'
								})
							}, 1500)
						}
					})
				} else if (statusCode === 200) {
					// 请求成功后
					let {
						code,
						data,
						msg
					} = res.data;
					// 200成功
					// console.log('res', res);
					if (code == 1) {
						resolve(res.data)
					} else if (code == 401) {
						uni.clearStorageSync()
						uni.showToast({
							icon: 'none',
							title: '登录过期，请重新登录！',
							mask: true,
							success: () => {
								setTimeout(() => {
									uni.reLaunch({
										url: '/pages/login/login'
									})
								}, 1500)
							}
						})
					} else {
						resolve(res.data)
					}
				} else {
					uni.showToast({
						icon: 'none',
						title: '网络请求失败！'
					})
					reject(res)
				}
			}
		})
	})
}

export {
	request
}
